package com.tulele.vtool.mapper;

import com.tulele.vtool.model.ArticleTailAdvertInfo;
import com.tulele.vtool.model.combinedEntity.UserAdvertList;
import com.tulele.vtool.model.combinedEntity.UserAdvertType;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;

import java.util.List;

@Component(value = "articleTailAdvertInfoMapper")
public interface ArticleTailAdvertInfoMapper {
    /**
     * 获取用户的广告列表
     * @param userId 用户编号
     * @param advertType 广告类型(其中 -1 表示全部)
     * @return 用户的广告列表
     */
    List<UserAdvertList> getArticleTailAdvertInfo(@Param("userId") Integer userId, @Param("advertType") Integer advertType);

    /**
     * 保存用户广告
     * @param entity 广告实体
     * @return
     */
    void saveArticleTailAdvert(ArticleTailAdvertInfo entity);

    /**
     * 修改广告
     * @param entity 广告实体
     */
    void updateArticleTailAdvert(ArticleTailAdvertInfo entity);

    /**
     * 删除广告
     * @param advertId 广告编号
     * @return 影响行数
     */
    int deleteArticleTailAdvert(Integer advertId);

    /**
     * 根据类型获取用户的广告
     * @param userId 用户编号
     * @param advertType 广告类型编号
     * @return 广告实体
     */
    ArticleTailAdvertInfo getAdvertByType(@Param("userId") Integer userId, @Param("advertType") Integer advertType);

    /**
     * 获取用户的广告类型列表
     * @param userId 用户编号
     * @param typeIds 用户关注的类型
     * @return 用户的广告类型列表
     */
    List<UserAdvertType> getAdvertTypeList(@Param("userId") Integer userId, @Param("typeIds") List<Integer> typeIds);

    /**
     * 根据广告 ID 获取广告信息
     * @param id 广告 ID
     * @return 广告信息
     */
    ArticleTailAdvertInfo getUserAdvertById(Integer id);

    /**
     * 获取用户的广告类型列表
     * @param userId 用户 ID
     * @return 用户的广告类型列表
     */
    List<Integer> getUserAdvertTypeList(Integer userId);
}
